{
  "guild": {
    "id": "1361349522684510449",
    "name": "wafer.space Community",
    "iconUrl": "2026-05_media/fb143eaa45770cbb40493d09b625e98b-09FD1.png"
  },
  "channel": {
    "id": "1504886967022653481",
    "type": "GuildPublicThread",
    "categoryId": "1409660288822673408",
    "category": "⁉️-questions",
    "name": "LVS_IGNORE_CELLS for fill/cap cells?",
    "topic": null
  },
  "dateRange": {
    "after": "2026-04-30T23:59:59.999+00:00",
    "before": "2026-06-01T00:00:00+00:00"
  },
  "exportedAt": "2026-07-09T04:43:46.5461269+00:00",
  "messages": [
    {
      "id": "1504886967022653481",
      "type": "Default",
      "timestamp": "2026-05-15T16:43:32.386+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "If you have a design with a lot of fill/cap cells, LVS takes an incredibly long time. This is likely due to the single/no pin connections of these cells and the isomorphism checking during LVS to do the matching of cells. Should the PDK ignore these fill cells? \n\n@Leo Moser (mole99) @Tim Edwards ?",
      "author": {
        "id": "1417961928961298623",
        "name": "mguthaus",
        "discriminator": "0000",
        "nickname": "Matt G. (Mobius)",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "323371864074485771",
          "name": "mole99",
          "discriminator": "0000",
          "nickname": "Leo Moser (mole99)",
          "color": null,
          "isBot": false,
          "roles": [
            {
              "id": "1423020172595298314",
              "name": "Mod",
              "color": null,
              "position": 4
            }
          ],
          "avatarUrl": "2026-05_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
        },
        {
          "id": "1365118310701600900",
          "name": "rtimothyedwards_19428",
          "discriminator": "0000",
          "nickname": "Tim Edwards",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-05_media/6bcc8e61db497b620550682309ace5d5-D89B4.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1504892555794448606",
      "type": "Default",
      "timestamp": "2026-05-15T17:05:44.853+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Netgen has a clever way to deal with this.  It treats every \"cell X with an unconnected pin\" like every other \"cell X with an unconnected pin\" and combines them in parallel, making sure to flag that the pin is unconnected instead of all the pins being connected together.\n\nSo if LVS is taking a long time for this reason, then you are doing something to subvert that method.  This could happen, for example, if the cells get renamed, as can happen when magic tries to disambiguate different projects which are using cells with the same name that may or may not be the same cell.  Mitch had a nice setup file for netgen that handled that case;  I do not think it has been ported to GF or IHP.\n\nIf you can post an example use case, I can quickly figure out if this is being caused by magic prefixing a library, and I can transfer Mitch's solution for sky130 over to gf180mcu.",
      "author": {
        "id": "1365118310701600900",
        "name": "rtimothyedwards_19428",
        "discriminator": "0000",
        "nickname": "Tim Edwards",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/6bcc8e61db497b620550682309ace5d5-D89B4.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1504894847549571182",
      "type": "Default",
      "timestamp": "2026-05-15T17:14:51.25+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "@Tim Edwards Here was my patch with the change on the template example:\nhttps://github.com/VLSIDA/gf180mcu-project-template/commit/2bd281386bac9fdf845696a617b356a9b9ef87a6\nNote that I'm using the 3.3V libraries and memories in the branch.\nhttps://github.com/VLSIDA/gf180mcu-project-template/tree/3v3-libraries\n\nWithout those changes, it was running 16+ hours and not finishing LVS.",
      "author": {
        "id": "1417961928961298623",
        "name": "mguthaus",
        "discriminator": "0000",
        "nickname": "Matt G. (Mobius)",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
      },
      "attachments": [],
      "embeds": [
        {
          "title": "fix: ignore fill/tap/decap cells during LVS to avoid netgen hang ·...",
          "url": "https://github.com/VLSIDA/gf180mcu-project-template/commit/2bd281386bac9fdf845696a617b356a9b9ef87a6",
          "timestamp": null,
          "description": "The 3.3V flow inserts ~315k fillcap_16 and ~82k tap_2 instances at\nchip_top — roughly 3x the device count of the 5V flow and ~257x more\nfillcap_16. Netgen&#39;s iterative partition refinement d...",
          "color": "#1E2327",
          "thumbnail": {
            "url": "2026-05_media/2bd281386bac9fdf845696a617b356a9b9ef87a6-5D375",
            "width": 1200,
            "height": 600
          },
          "images": [],
          "fields": [],
          "inlineEmojis": []
        },
        {
          "title": "GitHub - VLSIDA/gf180mcu-project-template at 3v3-libraries",
          "url": "https://github.com/VLSIDA/gf180mcu-project-template/tree/3v3-libraries",
          "timestamp": null,
          "description": "All-Digital PLL for GF180MCU using standard cells. Contribute to VLSIDA/gf180mcu-project-template development by creating an account on GitHub.",
          "color": "#1E2327",
          "thumbnail": {
            "url": "2026-05_media/gf180mcu-project-template-54141",
            "width": 1200,
            "height": 600
          },
          "images": [],
          "fields": [],
          "inlineEmojis": []
        }
      ],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "1365118310701600900",
          "name": "rtimothyedwards_19428",
          "discriminator": "0000",
          "nickname": "Tim Edwards",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-05_media/6bcc8e61db497b620550682309ace5d5-D89B4.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1504895053917589666",
      "type": "Default",
      "timestamp": "2026-05-15T17:15:40.452+00:00",
      "timestampEdited": "2026-05-15T17:15:48.824+00:00",
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "It was indeed for gf180mcu",
      "author": {
        "id": "1417961928961298623",
        "name": "mguthaus",
        "discriminator": "0000",
        "nickname": "Matt G. (Mobius)",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1504895213842337983",
      "type": "Default",
      "timestamp": "2026-05-15T17:16:18.581+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Interestingly, the 5V cells didn't really run into the issue since the cell density means many fewer fill/cap/tap cells.",
      "author": {
        "id": "1417961928961298623",
        "name": "mguthaus",
        "discriminator": "0000",
        "nickname": "Matt G. (Mobius)",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1504996868587786250",
      "type": "Default",
      "timestamp": "2026-05-16T00:00:14.961+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "@Matt G. (Mobius) The netgen setup can reduce not only devices, but also parallel cells. As you have noticed, if the parallel fill cells are reduced, then netgen can take a long time.\n\nCurrently, this is the setup\n```\n#---------------------------------------------------------------\n# Allow the fill, decap, etc., cells to be parallelized\n#---------------------------------------------------------------\n\nforeach cell $cells1 {\n    if {[regexp {gf180mcu_fd_sc_[^_]+__fillcap_[[:digit:]]+} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__endcap} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__filltie} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__antenna} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n}\n\nforeach cell $cells2 {\n    if {[regexp {gf180mcu_fd_sc_[^_]+__fillcap_[[:digit:]]+} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__endcap} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__filltie} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_fd_sc_[^_]+__antenna} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n}\n```",
      "author": {
        "id": "738396032295108721",
        "name": "bailey8889",
        "discriminator": "0000",
        "nickname": "bailey",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/0-EB806.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "1417961928961298623",
          "name": "mguthaus",
          "discriminator": "0000",
          "nickname": "Matt G. (Mobius)",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1505025445861658625",
      "type": "Default",
      "timestamp": "2026-05-16T01:53:48.314+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "@Matt G. (Mobius) :  I'm not sure what version of the PDK you have, but from the last WaferSpace tapeout, I added the Avalon 3.3V standard cells to the netgen setup (gf180mcuD/libs.tech/netgen/gf180mcuD_setup.tcl):\n```\n# And do the same for the Avalon semiconductor 3.3V standard cell library.\n\nforeach cell $cells1 {\n    if {[regexp {gf180mcu_as_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_as_sc_[^_]+__fillcap_[[:digit:]]+} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_as_sc_[^_]+__decap_[[:digit:]]+} $cell match]} {\n        property \"-circuit1 $cell\" parallel enable\n    }\n}\n\nforeach cell $cells2 {\n    if {[regexp {gf180mcu_as_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_as_sc_[^_]+__fillcap_[[:digit:]]+} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n    if {[regexp {gf180mcu_as_sc_[^_]+__decap_[[:digit:]]+} $cell match]} {\n        property \"-circuit2 $cell\" parallel enable\n    }\n}\n```\nIf you have that version of the PDK or newer, then you should not run into long LVS run-times with the Avalon 3.3V library.",
      "author": {
        "id": "1365118310701600900",
        "name": "rtimothyedwards_19428",
        "discriminator": "0000",
        "nickname": "Tim Edwards",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/6bcc8e61db497b620550682309ace5d5-D89B4.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "1417961928961298623",
          "name": "mguthaus",
          "discriminator": "0000",
          "nickname": "Matt G. (Mobius)",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1505215973572087889",
      "type": "Default",
      "timestamp": "2026-05-16T14:30:53.66+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "@Tim Edwards I've been using tag 1.4.0 of the wafer space template which is the newest",
      "author": {
        "id": "1417961928961298623",
        "name": "mguthaus",
        "discriminator": "0000",
        "nickname": "Matt G. (Mobius)",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "1365118310701600900",
          "name": "rtimothyedwards_19428",
          "discriminator": "0000",
          "nickname": "Tim Edwards",
          "color": null,
          "isBot": false,
          "roles": [],
          "avatarUrl": "2026-05_media/6bcc8e61db497b620550682309ace5d5-D89B4.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1505216180476973168",
      "type": "Default",
      "timestamp": "2026-05-16T14:31:42.99+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "Version 1.8.0 of the PDK",
      "author": {
        "id": "1417961928961298623",
        "name": "mguthaus",
        "discriminator": "0000",
        "nickname": "Matt G. (Mobius)",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/e459857e9a131799083272cfec162ef6-9879C.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    },
    {
      "id": "1506001195918032947",
      "type": "Default",
      "timestamp": "2026-05-18T18:31:05.256+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "@Leo Moser (mole99) - Where does this stuff fit into your PDK work?",
      "author": {
        "id": "169786952432746498",
        "name": "mithro_",
        "discriminator": "0000",
        "nickname": "Tim 'mithro' Ansell",
        "color": null,
        "isBot": false,
        "roles": [],
        "avatarUrl": "2026-05_media/9679bb77da48d47c905b398d98a83780-75B68.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [
        {
          "id": "323371864074485771",
          "name": "mole99",
          "discriminator": "0000",
          "nickname": "Leo Moser (mole99)",
          "color": null,
          "isBot": false,
          "roles": [
            {
              "id": "1423020172595298314",
              "name": "Mod",
              "color": null,
              "position": 4
            }
          ],
          "avatarUrl": "2026-05_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
        }
      ],
      "inlineEmojis": []
    },
    {
      "id": "1506173767796260897",
      "type": "Default",
      "timestamp": "2026-05-19T05:56:49.598+00:00",
      "timestampEdited": null,
      "callEndedTimestamp": null,
      "isPinned": false,
      "content": "If the netgen setup was updated after the last sync of the wafer.space PDK with open_pdks, which is likely the case, then one would need to handpick the patch.\nHowever, since we will soon be switching to the open_pdks PDK (I’m trying to finish a preview version of the template that uses it by the end of the week), this patch will be included then.",
      "author": {
        "id": "323371864074485771",
        "name": "mole99",
        "discriminator": "0000",
        "nickname": "Leo Moser (mole99)",
        "color": null,
        "isBot": false,
        "roles": [
          {
            "id": "1423020172595298314",
            "name": "Mod",
            "color": null,
            "position": 4
          }
        ],
        "avatarUrl": "2026-05_media/3c7c17f3225f6e56f4dccd83f14383f2-73F83.png"
      },
      "attachments": [],
      "embeds": [],
      "stickers": [],
      "reactions": [],
      "mentions": [],
      "inlineEmojis": []
    }
  ],
  "messageCount": 11
}